#ifndef __REMOET_COMPUTE_DEVICE_TYPE__
#define __REMOET_COMPUTE_DEVICE_TYPE__

#include <unistd.h>

#include "common/ret.h"

#define RC_TASK_LIST_SIZE 4

typedef Ret (*TaskFunc)(const void*, void*);

enum OP_TYPE
{
    // resource operation
    MEMORY_ALLOC = 0,
    MEMORY_FREE,

    TASKLIST_PUSH,
    TASKLIST_POP,

    OP_TYPE_OTHERS
}; // OP_TYPE


/**
 * record host send to device cmd
*/
typedef struct _task {
    size_t id;    // task name
    void* input;  // input
    void* output; // output
} Task;

/**
 * TaskList Node
*/
typedef struct _task_node {
    Task* task;
    Task* next;
}TaskNode;

/**
 * TaskList
*/
typedef struct _task_list {
    Task* head;
    Task* tail;
    size_t size;
}TaskList;


#endif // __REMOET_COMPUTE_COMMON_TYPE__